内部命令

android的adb等工具,并不是内部命令,每次使用都需要指定路径。将其所在的路径添加到~/.bashrc文件中:

# android adb
# export ANDROID_HOME=/home/ny/android/adt-bundle-linux-x86-20130729/sdk
# export PATH=$PATH:$ANDROID_HOME/platform-tools

使用命令source ~/.bashrc使修改生效。

可以使用type命令查看现在执行的adb命令的位置。

root@ny-server01:~# type adb
adb 是 /home/ny/android/adt-bundle-linux-x86-20130729/sdk/platform-tools/adb
root@ny-server01:~# 

shell的定制

工作中经常使用Cygwin的shell,但是其中ls命令所有显示都是黑白,其实可以如下定制: 修改用户目录下的.bashrc文件。

例如,ls命令分颜色显示目录、文件、链接文件等不同类型的目录或者文件

  1. 将alias ls='ls -hF --color=tty'前面的注释号#去掉
  2. 使用source .bashrc命令重置环境变量或者重启shell

例如,如果习惯使用ll命令

  1. 则将alias ll='ls -l'前面的注释#去掉,然后重置环境变量

当然,你也可以使用dircolors命令去改变ls --color的颜色输出。

#!

#!实际上是一个2 字节的魔法数字,这是指定一个文件类型的特殊标记,man magic 来获得关于这个迷人话题的更多详细信息。

当然"#!"也可以被忽略,不过这样你的脚本文件就只能是一些命令的集合,不能够使用shell 内建的指令了,如果不能使用变量的话,当然这也就失去了脚本编程的意义了.

shell脚本用户切换密码输入

想在shell脚本中实现用户切换,如下:

#!/bin/sh

su - user1 << END
user1passwd
END

这个恐怕办不到了,su也不允许通过重定向输入密码。可以使用root用户执行这个脚本,这样su时就不要输入密码了。

su读密码是通过/dev/tty读的,而不是通过stdin。所以你用普通的stdin重定向不能实现自动输入密码的功能。

我也试过,只能通过/dev/tty,不能同步哦stdin。如:

Assembly code

echo -e "user\npass\n" | su
standard in must be a tty

shell脚本切换路径

我在一个脚本中切换了路径,如下:

#!/bin/bash 
cd /home/winter 

运行推出后发现仍然是在运行脚本的路径,请教如何才可以在退出脚本后进入我指定的目录呢?

通常,当你执行一个shell script时,shell会重新运行一个新的shell来执行,而你执行cd xxx, 只是那个新的shell cd到xxx, 执行完退出,原本的shell当然没有变化,但有另一种执行方式, 可以让当前的shell直接执行命令, 这样就可以达到你要的效果了,将./shell_script.sh 改为 source ./shell_script.sh

shell编辑命令行

通过光标和功能键(Home、End 等键),您可以浏览并编辑命令行,如果您需要,还可以用键盘的快捷方式来完成一般的编辑:

例如:您用命令 mkdir peter/pan/documents/tinkerbell 新建了一个目录,现在您向用命令'cd'进入该目录,您可以用 cd !$,shell 将把前一个命令'mkdir'的参数添加到现在的'cd'后面。当您更深入了解Linux后,将看到这些快捷方式在其他应用程序下输入时,有时也有效,比如,在浏览器中的输入框中。

LD_LIBRARY_PATH

Linux环境变量名,该环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径。(该路径在默认路径之前查找)当执行函数动态链接.so时,如果此文件不在缺省目录下‘/usr/local/lib’ and ‘/usr/lib’. 那么就需要指定环境变量LD_LIBRARY_PATH。假如现在需要在已有的环境变量上添加新的路径名,则采用如下方式:

LD_LIBRARY_PATH=NEWDIRS:$LD_LIBRARY_PATH.(newdirs是新的路径串)(注:gnu系统可以自动添加在 /etc/ld.so.conf文件中来实现环境变量的设置)

[root@localhost etc]# ls /etc/ld.so*
/etc/ld.so.cache  /etc/ld.so.conf

kernel-2.6.31.5-127.fc12.i686.PAE.conf  qt-i386.conf   xulrunner-32.conf
mysql-i386.conf                         tix-i386.conf